﻿#pragma once
#include "TrieNode.h"

class Trie
{
public:
    Trie();
    void insert(const char* word);
    // 查找字符串，返回找到的个数
    int search(const char* word) const;
    void del(const char* word);
    int prefixNumber(const char* preStr);
    
public:
    TrieNode* root;
};

// 销毁前缀树的根节点
inline void releaseTrieTree(TrieNode* root)
{
    if (!root) return;
    
    for (auto& next : root->nexts)
    {
        if (next)
        {
            releaseTrieTree(next);
            next = nullptr;
        }
    }

    delete(root);
}
